package cn.tedu.straw.redis.tag.schedule;

import cn.tedu.straw.commons.vo.TagVO;
import cn.tedu.straw.redis.tag.service.ITagService;
import cn.tedu.straw.redis.tag.util.RedisUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * @author shkstart
 * @create 2020-08-10 17:08
 */
@Component
public class TagSchedule {

    @Autowired
    private ITagService tagService;
    @Autowired
    private RedisUtils redisUtils;

    @Scheduled(initialDelay = 0, fixedRate = 60 * 1000)
    public void loadTags() {
        // 获取所有Tag数据
        List<TagVO> tags = tagService.getAllTags();
        // 遍历所有Tag
        for (TagVO tag : tags) {
            // 将Tag集合存入到Redis中
            // 使用的是访问List的API，Key不变，不停的添加值即可，类似于Java集合中反复调用list.add()
            redisUtils.rightPush("tags", tag);
            // 将每个Tag独立的存入到Redis中，Key的格式为 tag:ID，例如 tag:17
            redisUtils.set("tag:" + tag.getId(), tag);
        }
    }
}
